package org.mybatis.spring;

import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;

/**
 * @author LIU
 * @version 1.0
 * @description TODO
 * @date 2024/1/25 11:11
 * MapperScan 扫描路径  扫描mapper接口
 *
 */
public class LiuMapperScannerRegistrar implements ImportBeanDefinitionRegistrar {
    /**
     * 注册 proxy 代理对象
     */
    @Override
    public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {
        // MapperScan("com.liu.mapper")
        String path = (String)metadata.getAnnotationAttributes(MapperScan.class.getName()).get("value");
        // 扫描Mapper  实现注册
        LiuMapperScanner liuMapperScanner = new LiuMapperScanner(registry);
        liuMapperScanner.scan(path);


//        List<Class> list = new ArrayList<>();
//        list.add(UserMapper.clazz);
//        list.add(OrderMapper.clazz);
//
//        for (Class clazz : list) {
//            AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition();
//            beanDefinition.setBeanClass(LiuFactoryBean.clazz);
//            // 设置构造方法第一个参数
//            beanDefinition.getConstructorArgumentValues().addGenericArgumentValue(clazz);
//            registry.registerBeanDefinition(clazz.getSimpleName(),beanDefinition);
//        }
    }
}
